package com.joker.demo.admin.util;


import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil;

import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
 * @author : feixiang.li
 * @since : 2025-03-31 14:15
 */
public class MapGetUtils {

    private MapGetUtils(){

    }

    /**
     * 将 List<T> 转换为 Map<K, T>，并处理可能的重复键（默认取第一个）
     *
     * @param list         数据列表
     * @param keyExtractor 键提取方法（如 DwsStockSpecPO::getSpecId）
     * @return 转换后的 Map
     */
    public static <T, K> Map<K, T> toMapWithFirstOccurrence(List<T> list, Function<T, K> keyExtractor) {
        if (CollUtil.isEmpty(list)) {
            return MapUtil.newHashMap();
        }
        return list.stream().filter(Objects::nonNull).collect(Collectors.toMap(keyExtractor, item -> item, (v1, v2) -> v1));
    }
}
